package puntaelena.facilitylocation.hillclimbing.solver.services;

import jfuzzyprincepless.negotiation.services.IService;
import puntaelena.facilitylocation.hillclimbing.solver.agents.FacilityCoalition;

import java.util.List;

public interface IFcltCoalitionEventsListener // TODO: remain only necessary events
	extends IService
{
	// ICoalitionsRegistry events:
	public void onMostSimilarCoalitionsChanged(
		double oldSimMeasure,
		FacilityCoalition oldCoalA,
		FacilityCoalition oldCoalB,
		double simMeasure,
		FacilityCoalition coalA,
		FacilityCoalition coalB
	);

	public void onCoalitionsUnite(
		FacilityCoalition coalA,
		FacilityCoalition coalB
	);

	public void onNoUnite(double benefitMeasure);

	// CollaboratingFacilityAgent events:
	public void onCoalitionApply(
		FacilityCoalition coalition,
		List<Integer> enemies
	);
}
